package designpatterns.behavior;

/**
 * 中介者模式： 定义一个中介对象来封装一系列对象之间的交互，使原有对象之间的耦合松散，且可以独立地改变它们之间的交互。
 * 中介者模式又叫调停模式，它是迪米特法则的典型应用。
 * 优点：1、降低了类的复杂度，将一对多转化成了一对一。
 * 2、各个类之间的解耦。
 * 3、符合迪米特原则。
 * 缺点：中介者会庞大，变得复杂难以维护。
 * 使用场景： 1、系统中对象之间存在比较复杂的引用关系，导致它们之间的依赖关系结构混乱而且难以复用该对象。
 * 2、想通过一个中间类来封装多个类中的行为，而又不想生成太多的子类。
 *
 * @author jack.wu
 * @since 2019/12/5 09:24
 */
public class Mediator {
}

class ChatRoom {
    public static void showMessage(User user, String message) {
        System.out.println("[" + user.getName() + "] :" + message);
    }
}

class User {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public User(String name) {
        this.name = name;
    }

    public void sendMessage(String message) {
        ChatRoom.showMessage(this, message);
    }
}
